CREATE TABLE [dbo].[tb_Plazas]
(
[idPlaza] [int] NOT NULL IDENTITY(1, 1),
[CUPOF] [varchar] (65) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[Organizacion] [int] NOT NULL,
[SubOrganizacion] [int] NOT NULL,
[Funcion] [int] NOT NULL,
[Asignatura] [int] NULL,
[Division] [int] NULL,
[Turno] [int] NOT NULL,
[FechaAlta] [datetime] NOT NULL,
[NroSecuencia] [int] NULL,
[Horas] [int] NOT NULL,
[NormaCreacion] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[Baja] [varchar] (1) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[FechaBaja] [datetime] NULL,
[UltimoDocente] [int] NULL,
[NormaCierre] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[Sistema] [int] NOT NULL,
[RegimenLaboral] [int] NOT NULL,
[Financiamiento] [int] NOT NULL,
[Presupuesto] [int] NOT NULL,
[Finalidad] [int] NOT NULL,
[TipoDeFuncion] [int] NOT NULL,
[RegimenSalarial] [int] NOT NULL,
[RegimenSuplencias] [int] NOT NULL,
[RegimenDesigna] [int] NULL,
[Temporalidad] [int] NOT NULL,
[CargoSalarialDefault] [int] NOT NULL,
[DuenoActual] [int] NULL,
[SitRevDuenoActual] [int] NULL,
[CategoriaTituloActualOcupante] [int] NULL,
[Horario] [varchar] (350) COLLATE SQL_Latin1_General_CP1_CI_AS NULL CONSTRAINT [DF_tb_Plazas_Horario] DEFAULT ('lun: 08:00 a 09:30; mar: 08:00 a 09:30; mie: 08:00 a 09:30; jue: 08:00 a 09:30; vie: 08:00 a 09:30;'),
[Paquete] [int] NULL,
[EsJefeDeOrg] [varchar] (1) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[Observaciones] [varchar] (255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[CUISE] [int] NOT NULL,
[PorcentajeSubsidio] [float] NULL,
[CUPOFPriv] [varchar] (60) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[EsCabeceraDePaquete] [varchar] (1) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[TipoDePaquete] [int] NULL,
[NTUser] [int] NULL CONSTRAINT [DF_tb_Plazas_NTUser] DEFAULT ([dbo].[sp_usuario](suser_sname())),
[FechaCarga] [datetime] NULL CONSTRAINT [DF_tb_Plazas_FechaCarga] DEFAULT (getdate()),
[ocu_cargo_id9] [int] NULL,
[EspacioCurricular] [int] NULL
) ON [PRIMARY]
ALTER TABLE [dbo].[tb_Plazas] WITH NOCHECK ADD
CONSTRAINT [FK_tb_Plazas_tb_Asignaturas] FOREIGN KEY ([Asignatura]) REFERENCES [dbo].[tb_Asignaturas] ([idAsignatura]) NOT FOR REPLICATION
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
CREATE TRIGGER [dbo].[AuditoriaPlazas] ON [dbo].[tb_Plazas] 
FOR  DELETE 
AS
SET NOCOUNT ON
--Declare @idPlazaAudit int     Declare @CUPOF varchar(60)     Declare @Organizacion int  
/*
Declare @SubOrganizacion int     Declare @Funcion int     Declare @Asignatura int     Declare @Division int    
Declare @Turno int     Declare @FechaAlta datetime     Declare @NroSecuencia int     Declare @Horas int  
Declare @NormaCreacion varchar(50)     Declare @Baja varchar(1)     Declare @FechaBaja datetime     
Declare @UltimoDocente int     Declare @NormaCierre varchar(50)     Declare @Sistema int     
Declare @RegimenLaboral int     Declare @Financiamiento int     Declare @Presupuesto int     Declare @Finalidad int     
Declare @TipoDeFuncion int     Declare @RegimenSalarial int     Declare @RegimenSuplencias int     Declare @RegimenDesigna int     
Declare @Temporalidad int     Declare @CargoSalarialDefault int     Declare @DuenoActual int     Declare @SitRevDuenoActual int     
Declare @CategoriaTituloActualOcupante int     Declare @Horario varchar(350)     Declare @Paquete int     
Declare @EsJefeDeOrg varchar(1)     Declare @Observaciones varchar(255)     Declare @CUISE int     
Declare @PorcentajeSubsidio float     Declare @CUPOFPriv varchar(60)     Declare @EsCabeceraDePaquete varchar(1)     
Declare @TipoDePaquete int    



select @idplazaAudit=idplaza,
	@cupof=cupof,
	@organizacion=organizacion,
	@suborganizacion=suborganizacion,
	@funcion=funcion,
	@asignatura=asignatura,
	@division=division,
	@turno=turno,
	@fechaalta=fechaalta,
	@nrosecuencia=nrosecuencia,
	@horas=horas,
	@normacreacion=normacreacion,
	@baja=baja,
	@fechabaja=fechabaja,
	@ultimodocente=ultimodocente,
	@normacierre=normacierre,
	@sistema=sistema,
	@regimenlaboral=regimenlaboral,
	@financiamiento=financiamiento,
	@presupuesto=presupuesto,
	@finalidad=finalidad,
	@tipodefuncion=tipodefuncion,
	@regimensalarial=regimensalarial,
	@regimensuplencias=regimensuplencias,
	@regimendesigna=regimendesigna,
	@temporalidad=temporalidad,
	@cargosalarialdefault=cargosalarialdefault,
	@duenoactual=duenoactual,
	@sitrevduenoactual=sitrevduenoactual,
	@categoriatituloactualocupante=categoriatituloactualocupante,
	@horario=horario,
	@paquete=paquete,
	@esjefedeorg=esjefedeorg,
	@observaciones=observaciones,
	@cuise=cuise,
	@porcentajesubsidio=porcentajesubsidio,
	@cupofpriv=cupofpriv,
	@escabeceradepaquete=escabeceradepaquete,
	@tipodepaquete=tipodepaquete
from deleted 

INSERT INTO dbo.tb_PlazasAudit
	(
	idPlazaAudit,
	CUPOF,
	Organizacion,
	SubOrganizacion,
	Funcion,
	Asignatura,
	Division,
	Turno,
	FechaAlta,
	NroSecuencia,
	Horas,
	NormaCreacion,
	Baja,
	FechaBaja,
	UltimoDocente,
	NormaCierre,
	Sistema,
	RegimenLaboral,
	Financiamiento,
	Presupuesto,
	Finalidad,
	TipoDeFuncion,
	RegimenSalarial,
	RegimenSuplencias,
	RegimenDesigna,
	Temporalidad,
	CargoSalarialDefault,
	DuenoActual,
	SitRevDuenoActual,
	CategoriaTituloActualOcupante,
	Horario,
	Paquete,
	EsJefeDeOrg,
	Observaciones,
	CUISE,
	PorcentajeSubsidio,
	CUPOFPriv,
	EsCabeceraDePaquete,
	TipoDePaquete,
	ABM
	)
VALUES 
	(
	@idplazaaudit,
	@cupof,
	@organizacion,
	@suborganizacion,
	@funcion,
	@asignatura,
	@division,
	@turno,
	@fechaalta,
	@nrosecuencia,
	@horas,
	@normacreacion,
	@baja,
	@fechabaja,
	@ultimodocente,
	@normacierre,
	@sistema,
	@regimenlaboral,
	@financiamiento,
	@presupuesto,
	@finalidad,
	@tipodefuncion,
	@regimensalarial,
	@regimensuplencias,
	@regimendesigna,
	@temporalidad,
	@cargosalarialdefault,
	@duenoactual,
	@sitrevduenoactual,
	@categoriatituloactualocupante,
	@horario,
	@paquete,
	@esjefedeorg,
	@observaciones,
	@cuise,
	@porcentajesubsidio,
	@cupofpriv,
	@escabeceradepaquete,
	@tipodepaquete,
	'Baja'
	)	



*/
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
CREATE TRIGGER [dbo].[AuditoriaPlazasIns] ON [dbo].[tb_Plazas] 
FOR insert
AS
SET NOCOUNT ON
--Declare @idPlazaAudit int     Declare @CUPOF varchar(60)     Declare @Organizacion int  
/*
Declare @SubOrganizacion int     Declare @Funcion int     Declare @Asignatura int     Declare @Division int    
Declare @Turno int     Declare @FechaAlta datetime     Declare @NroSecuencia int     Declare @Horas int  
Declare @NormaCreacion varchar(50)     Declare @Baja varchar(1)     Declare @FechaBaja datetime     
Declare @UltimoDocente int     Declare @NormaCierre varchar(50)     Declare @Sistema int     
Declare @RegimenLaboral int     Declare @Financiamiento int     Declare @Presupuesto int     Declare @Finalidad int     
Declare @TipoDeFuncion int     Declare @RegimenSalarial int     Declare @RegimenSuplencias int     Declare @RegimenDesigna int     
Declare @Temporalidad int     Declare @CargoSalarialDefault int     Declare @DuenoActual int     Declare @SitRevDuenoActual int     
Declare @CategoriaTituloActualOcupante int     Declare @Horario varchar(350)     Declare @Paquete int     
Declare @EsJefeDeOrg varchar(1)     Declare @Observaciones varchar(255)     Declare @CUISE int     
Declare @PorcentajeSubsidio float     Declare @CUPOFPriv varchar(60)     Declare @EsCabeceraDePaquete varchar(1)     
Declare @TipoDePaquete int    



select @idplazaAudit=idplaza,
	@cupof=cupof,
	@organizacion=organizacion,
	@suborganizacion=suborganizacion,
	@funcion=funcion,
	@asignatura=asignatura,
	@division=division,
	@turno=turno,
	@fechaalta=fechaalta,
	@nrosecuencia=nrosecuencia,
	@horas=horas,
	@normacreacion=normacreacion,
	@baja=baja,
	@fechabaja=fechabaja,
	@ultimodocente=ultimodocente,
	@normacierre=normacierre,
	@sistema=sistema,
	@regimenlaboral=regimenlaboral,
	@financiamiento=financiamiento,
	@presupuesto=presupuesto,
	@finalidad=finalidad,
	@tipodefuncion=tipodefuncion,
	@regimensalarial=regimensalarial,
	@regimensuplencias=regimensuplencias,
	@regimendesigna=regimendesigna,
	@temporalidad=temporalidad,
	@cargosalarialdefault=cargosalarialdefault,
	@duenoactual=duenoactual,
	@sitrevduenoactual=sitrevduenoactual,
	@categoriatituloactualocupante=categoriatituloactualocupante,
	@horario=horario,
	@paquete=paquete,
	@esjefedeorg=esjefedeorg,
	@observaciones=observaciones,
	@cuise=cuise,
	@porcentajesubsidio=porcentajesubsidio,
	@cupofpriv=cupofpriv,
	@escabeceradepaquete=escabeceradepaquete,
	@tipodepaquete=tipodepaquete
from inserted 

INSERT INTO dbo.tb_PlazasAudit
	(
	idPlazaAudit,
	CUPOF,
	Organizacion,
	SubOrganizacion,
	Funcion,
	Asignatura,
	Division,
	Turno,
	FechaAlta,
	NroSecuencia,
	Horas,
	NormaCreacion,
	Baja,
	FechaBaja,
	UltimoDocente,
	NormaCierre,
	Sistema,
	RegimenLaboral,
	Financiamiento,
	Presupuesto,
	Finalidad,
	TipoDeFuncion,
	RegimenSalarial,
	RegimenSuplencias,
	RegimenDesigna,
	Temporalidad,
	CargoSalarialDefault,
	DuenoActual,
	SitRevDuenoActual,
	CategoriaTituloActualOcupante,
	Horario,
	Paquete,
	EsJefeDeOrg,
	Observaciones,
	CUISE,
	PorcentajeSubsidio,
	CUPOFPriv,
	EsCabeceraDePaquete,
	TipoDePaquete,
	ABM
	)
VALUES 
	(
	@idplazaaudit,
	@cupof,
	@organizacion,
	@suborganizacion,
	@funcion,
	@asignatura,
	@division,
	@turno,
	@fechaalta,
	@nrosecuencia,
	@horas,
	@normacreacion,
	@baja,
	@fechabaja,
	@ultimodocente,
	@normacierre,
	@sistema,
	@regimenlaboral,
	@financiamiento,
	@presupuesto,
	@finalidad,
	@tipodefuncion,
	@regimensalarial,
	@regimensuplencias,
	@regimendesigna,
	@temporalidad,
	@cargosalarialdefault,
	@duenoactual,
	@sitrevduenoactual,
	@categoriatituloactualocupante,
	@horario,
	@paquete,
	@esjefedeorg,
	@observaciones,
	@cuise,
	@porcentajesubsidio,
	@cupofpriv,
	@escabeceradepaquete,
	@tipodepaquete,
	'Alta'
	)	


*/
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
CREATE TRIGGER [dbo].[AuditoriaPlazasModif] ON [dbo].[tb_Plazas] 
FOR  update
AS

Declare @idPlazaAudit int     Declare @CUPOF varchar(60)     Declare @Organizacion int  
/*
Declare @SubOrganizacion int     Declare @Funcion int     Declare @Asignatura int     Declare @Division int    
Declare @Turno int     Declare @FechaAlta datetime     Declare @NroSecuencia int     Declare @Horas int  
Declare @NormaCreacion varchar(50)     Declare @Baja varchar(1)     Declare @FechaBaja datetime     
Declare @UltimoDocente int     Declare @NormaCierre varchar(50)     Declare @Sistema int     
Declare @RegimenLaboral int     Declare @Financiamiento int     Declare @Presupuesto int     Declare @Finalidad int     
Declare @TipoDeFuncion int     Declare @RegimenSalarial int     Declare @RegimenSuplencias int     Declare @RegimenDesigna int     
Declare @Temporalidad int     Declare @CargoSalarialDefault int     Declare @DuenoActual int     Declare @SitRevDuenoActual int     
Declare @CategoriaTituloActualOcupante int     Declare @Horario varchar(350)     Declare @Paquete int     
Declare @EsJefeDeOrg varchar(1)     Declare @Observaciones varchar(255)     Declare @CUISE int     
Declare @PorcentajeSubsidio float     Declare @CUPOFPriv varchar(60)     Declare @EsCabeceraDePaquete varchar(1)     
Declare @TipoDePaquete int    



select @idplazaAudit=idplaza,
	@cupof=cupof,
	@organizacion=organizacion,
	@suborganizacion=suborganizacion,
	@funcion=funcion,
	@asignatura=asignatura,
	@division=division,
	@turno=turno,
	@fechaalta=fechaalta,
	@nrosecuencia=nrosecuencia,
	@horas=horas,
	@normacreacion=normacreacion,
	@baja=baja,
	@fechabaja=fechabaja,
	@ultimodocente=ultimodocente,
	@normacierre=normacierre,
	@sistema=sistema,
	@regimenlaboral=regimenlaboral,
	@financiamiento=financiamiento,
	@presupuesto=presupuesto,
	@finalidad=finalidad,
	@tipodefuncion=tipodefuncion,
	@regimensalarial=regimensalarial,
	@regimensuplencias=regimensuplencias,
	@regimendesigna=regimendesigna,
	@temporalidad=temporalidad,
	@cargosalarialdefault=cargosalarialdefault,
	@duenoactual=duenoactual,
	@sitrevduenoactual=sitrevduenoactual,
	@categoriatituloactualocupante=categoriatituloactualocupante,
	@horario=horario,
	@paquete=paquete,
	@esjefedeorg=esjefedeorg,
	@observaciones=observaciones,
	@cuise=cuise,
	@porcentajesubsidio=porcentajesubsidio,
	@cupofpriv=cupofpriv,
	@escabeceradepaquete=escabeceradepaquete,
	@tipodepaquete=tipodepaquete
from deleted 
if (@idPlazaAudit  is not null)
begin
INSERT INTO dbo.tb_PlazasAudit
	(
	idPlazaAudit,
	CUPOF,
	Organizacion,
	SubOrganizacion,
	Funcion,
	Asignatura,
	Division,
	Turno,
	FechaAlta,
	NroSecuencia,
	Horas,
	NormaCreacion,
	Baja,
	FechaBaja,
	UltimoDocente,
	NormaCierre,
	Sistema,
	RegimenLaboral,
	Financiamiento,
	Presupuesto,
	Finalidad,
	TipoDeFuncion,
	RegimenSalarial,
	RegimenSuplencias,
	RegimenDesigna,
	Temporalidad,
	CargoSalarialDefault,
	DuenoActual,
	SitRevDuenoActual,
	CategoriaTituloActualOcupante,
	Horario,
	Paquete,
	EsJefeDeOrg,
	Observaciones,
	CUISE,
	PorcentajeSubsidio,
	CUPOFPriv,
	EsCabeceraDePaquete,
	TipoDePaquete,
	ABM
	)
VALUES 
	(
	@idplazaaudit,
	@cupof,
	@organizacion,
	@suborganizacion,
	@funcion,
	@asignatura,
	@division,
	@turno,
	@fechaalta,
	@nrosecuencia,
	@horas,
	@normacreacion,
	@baja,
	@fechabaja,
	@ultimodocente,
	@normacierre,
	@sistema,
	@regimenlaboral,
	@financiamiento,
	@presupuesto,
	@finalidad,
	@tipodefuncion,
	@regimensalarial,
	@regimensuplencias,
	@regimendesigna,
	@temporalidad,
	@cargosalarialdefault,
	@duenoactual,
	@sitrevduenoactual,
	@categoriatituloactualocupante,
	@horario,
	@paquete,
	@esjefedeorg,
	@observaciones,
	@cuise,
	@porcentajesubsidio,
	@cupofpriv,
	@escabeceradepaquete,
	@tipodepaquete,
	'Modificacion'
	)	
end


*/
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
CREATE TRIGGER [dbo].[BajasLogicastb_Plazas] ON [dbo].[tb_Plazas]
FOR UPDATE AS
SET NOCOUNT ON
declare @Baja varchar(1)
declare @esCabeceraDePaquete varchar(1)
declare @idPaquete int
declare @FechaBaja datetime
Declare @idPlaza Int
Select @Baja = Baja, @idPlaza = idPlaza, @FechaBaja = FechaBaja from inserted 
Select @esCabeceraDePaquete = esCabeceraDePaquete from inserted

/*
--Controla la baja de una plaza que se esta siendo usada en un SS abierto
If update(Baja) And Exists (Select * From tbSubServiciosAgentes Where Plaza = @idPlaza And ( (FechaBaja Is Null) Or (FechaBaja Is Not Null And FechaBaja > @FechaBaja) ) )
Begin
	Raiserror('La plaza no puede ser dada de baja porque esta siendo ocupada en este momento', 16,1)
	Rollback
End	
*/
--ALTER TABLE dbo.tb_Plazas DISABLE TRIGGER AuditoriaPlazasIns 
-- Si se baja la Plaza y esta es cabecera de paquete se bajan los hijos y el paquete.
IF update(Baja) and @Baja = 'S' and @esCabeceraDePaquete = 'S'
begin
	Select @idPaquete = idPaquete from tb_PaquetesDePlazas, inserted where PlazaMadre = idPlaza
	update tb_Plazas set  FechaBaja = @FechaBaja where Paquete = @idPaquete
	update tb_PaquetesDePlazas set Baja = 'S', FechaBaja = @FechaBaja where idPaquete = @idPaquete
end

--ALTER TABLE dbo.tb_Plazas ENABLE TRIGGER AuditoriaPlazasIns
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
CREATE TRIGGER [dbo].[ControlActualizaciones] ON [dbo].[tb_Plazas] 


FOR  UPDATE
AS
declare @a int

if not exists (select * from tb_usuarios u inner join tb_relusuariorol ur on u.idusuario = ur.idusuario inner join tb_relpermisosroles pr on pr.idrol = ur.idrol  where ntuser = system_user and pr.idpermiso = 2237 and u.idusuario in (34653622,34653623,34653620,34653648,34653635,34653644,34653617,34653816,34653615,34653637,34653796,34653656,34653547,34653586,34653867,34653873,34653738,34653870,34653871,34653640,34653625,34653552))  
begin
DECLARE @Asignatura as INT, @Funcion as INT, @Division as INT, @Turno as INT, @Horas as INT, @CUISE As INT, @RegimenSalarial as INT, @Presupuesto as INT, @FechaAlta  As DATETIME

DECLARE @Asignatura2 as INT, @Funcion2 as INT, @Division2 as INT, @Turno2 as INT, @Horas2 as INT, @CUISE2 As INT, @RegimenSalarial2 as INT, @Presupuesto2 as INT, @FechaAlta2  As DATETIME

SELECT @Asignatura =Asignatura, @Funcion = Funcion , @Division = Division, @Turno =Turno, @Horas =Horas, @CUISE =Cuise, @RegimenSalarial=RegimenSalarial, @Presupuesto=Presupuesto, @FechaAlta = FechaAlta FROM Inserted

SELECT @Asignatura2=Asignatura, @Funcion2 = Funcion , @Division2 = Division, @Turno2 =Turno, @Horas2 =Horas, @CUISE2 =Cuise, @RegimenSalarial2=RegimenSalarial, @Presupuesto2=Presupuesto, @FechaAlta2 = FechaAlta FROM Deleted


IF  (@Asignatura2 <> @Asignatura) OR (@Funcion2<> @Funcion)  OR (@Division2 <> @Division) OR (@Turno2  <> @Turno) OR  (@Horas2 <> @Horas) OR (@CUISE2  <> @Cuise) OR (@RegimenSalarial2 <> @RegimenSalarial) OR (@Presupuesto2<>@Presupuesto) OR (@FechaAlta2 <> @FechaAlta)

BEGIN

	RAISERROR (' No pueden modificarse los campos que forman el CUPOF',16,1)
	ROLLBACK TRANSACTION
END

end
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
-- CONTROL PARA NO INSERTAR DOS PLAZAS IGUALES ABIERTAS SUPERPUESTAS
CREATE TRIGGER [dbo].[controlarAltaPlazas] ON [dbo].[tb_Plazas] 
FOR INSERT, UPDATE
AS
SET NOCOUNT ON
--declare @x int
/*
if exists(Select * from tb_Plazas where Division = (Select division from inserted) and asignatura = (Select asignatura from inserted) 
	and funcion = (Select funcion from inserted) and baja='N' and idPlaza <> (Select idPlaza from inserted) and cargosalarialdefault = (Select cargosalarialdefault from inserted) and horas = (Select horas from inserted))
BEGIN
	RAISERROR('La Plaza que desea dar de alta ya existe!', 16, 1)
	ROLLBACK
END
*/
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
CREATE TRIGGER  [dbo].[generarCUPOF] ON [dbo].[tb_Plazas] 
FOR UPDATE, insert
AS

SET NOCOUNT ON

--declare @CUPOF varchar(60)
declare @Plaza int
--ALTER TABLE dbo.tb_Plazas DISABLE TRIGGER AuditoriaPlazasIns
---ALTER TABLE dbo.tb_Plazas DISABLE TRIGGER AuditoriaPlazasModif
if (update(asignatura)) or (update(funcion)) or (update(division)) or (update(turno)) or (update(horas)) or (update(cuise)) or (update(regimensalarial)) or (update(presupuesto) or (update(fechaalta)))
begin
	declare c cursor static for Select idPlaza from inserted 

	open c

	fetch next from c into @plaza

		while @@fetch_status = 0 begin
			exec spActualizarCupof  @Plaza
			fetch next from c into @plaza
		end
	close c
	deallocate c
end
--ALTER TABLE dbo.tb_Plazas ENABLE TRIGGER AuditoriaPlazasModif
--ALTER TABLE dbo.tb_Plazas ENABLE TRIGGER AuditoriaPlazasIns



/*
if (update(asignatura)) or (update(funcion)) or (update(turno)) or (update(cargosalarialdefault))
begin
Select @CUPOF = (Select convert(varchar, o.cuise))+'-'+convert(varchar,(Select cargosalarialdefault from inserted))+'-'+m.mnemo+'-'+d.curso+'-'+d.division+'-'+f.mnemo+'-'+a.mnemo+'-'+t.mnemo+'-'+
(Select cast(day(FechaAlta) as varchar(2))+cast(month(FechaAlta) as varchar(2))+cast(year(FechaAlta) as varchar(4)) from inserted)+'-'+case (Select Presupuesto from inserted) when 4 then 'E' else 'I' end
from  tb_Organizaciones o, tb_ModalidadesEnsenanza m, tb_SubOrganizaciones so, tb_Divisiones d, tb_FuncionesLUI f, tb_Asignaturas a, tb_Turnos t, tb_Cargos c
where o.idOrganizaciones = (Select organizacion from inserted) and
m.idModalidad = so.modalidad and
so.idSubOrganizacion = (select SubOrganizacion from inserted) and
d.idDivision = (select division from inserted) and
f.idFuncion = (select funcion from inserted) and
a.idasignatura = (select asignatura from inserted) and
t.idTurno = d.turno and
c.idcargo =*  (select cargosalarialdefault from inserted)

--print @cupof
declare @idPlaza int
select @idPlaza =  idPlaza from inserted
print convert(varchar, @idPlaza)

update tb_Plazas set CUPOF = @CUPOF where idPlaza = @idPlaza
end
*/
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
CREATE TRIGGER [dbo].[PasarAPaquete] ON [dbo].[tb_Plazas] 
FOR INSERT, UPDATE
AS
SET NOCOUNT ON
declare @Cupof varchar(60)
declare @idPlaza int
declare @Baja varchar(1)
declare @Fechabaja datetime
declare @esCabeceraInserted  varchar(1)
declare @esCabeceraDeleted varchar(1)
declare @TipoPaqueteInserted int
declare @TipoPaqueteDeleted int
declare @Horas int
declare @Paquete int
declare @DuenoActual int
declare @organizacion int
declare @suborganizacion int

declare plazasActualizadas2 cursor static for 
Select i.idPlaza, i.esCabeceraDePaquete, d.esCabeceraDePaquete, isNull(i.TipoDePaquete,-1), isNull(d.TipoDePaquete, -1) from inserted i, deleted d where i.idPlaza = d.idPlaza
open plazasActualizadas2

fetch next from plazasActualizadas2 into @idPlaza, @esCabeceraInserted, @esCabeceraDeleted, @TipoPaqueteInserted, @TipoPaqueteDeleted
--ALTER TABLE dbo.tb_Plazas DISABLE TRIGGER AuditoriaPlazasIns 
while @@fetch_status = 0
begin
	if @TipoPaqueteInserted <> -1 And (@TipoPaqueteInserted <> @TipoPaqueteDeleted)
	begin
		Select @Baja = Baja from inserted where idPlaza = @idPlaza
		Select @organizacion = Organizacion, @suborganizacion = suborganizacion from tb_plazas where idplaza = @idplaza
		if @Baja = 'S'
			raiserror('Error! La Plaza no puede ser cabecera de Paquete porque se encuentra dada de baja',16,1)
		else
		begin
			Select @Cupof = Cupof, @DuenoActual = DuenoActual from inserted where idPlaza = @idPlaza
			insert tb_PaquetesDePlazas Select @Cupof, @idPlaza, @TipoPaqueteInserted, null, 'N', null, @DuenoActual, @organizacion, @suborganizacion
			Select  @Paquete = @@Identity
			if (Select regimensalarial from tb_Plazas where idPlaza = @idPlaza) = 12
				Select @Horas = EquivHoraria from tbCargosSalariales where idCargo = (Select CargoSalarialDefault from tb_Plazas where idPlaza = @idPlaza)
			else
				Select @Horas = Horas from tb_Plazas where idPlaza = @idPlaza
			insert tb_UsoDeExtraclases Select @Paquete, getdate(), null, @Horas 
	end
	end

	if (@TipoPaqueteInserted <> @TipoPaqueteDeleted) and @TipoPaqueteInserted = -1
	begin
		Select @FechaBaja = isNull(FechaBaja, getdate()) from inserted where idPlaza = @idPlaza
		update tb_PaquetesDePlazas set Baja='S', FechaBaja = @FechaBaja  where PlazaMadre = @idPlaza
		Update tb_Plazas Set Paquete = Null Where Paquete In (Select PlazaMadre From tb_PaquetesDePlazas Where PlazaMadre = @IdPlaza)
	end	

fetch next from plazasActualizadas2 into @idPlaza, @esCabeceraInserted, @esCabeceraDeleted, @TipoPaqueteInserted, @TipoPaqueteDeleted
end

close plazasActualizadas2
deallocate plazasActualizadas2

--ALTER TABLE dbo.tb_Plazas ENABLE TRIGGER AuditoriaPlazasIns 

/*
IF update(esCabeceraDePaquete) and upper((Select esCabeceraDePaquete from inserted)) = 'S'
begin
	Select @Baja = Baja from inserted
	if @Baja = 'S'
		raiserror('Error! La Plaza no puede ser cabecera de Paquete porque se encuentra dada de baja',16,1)
	else
	begin
		Select @Cupof = Cupof, @idPlaza = idPlaza from inserted
		-- Se crea un paquete con el tipo Concetración
		insert tb_PaquetesDePlazas Select @Cupof, @idPlaza, 4, null, 'N', null
	end
end

IF update(esCabeceraDePaquete) and upper((Select esCabeceraDePaquete from inserted)) = 'N'
begin
	Select @FechaBaja = isNull(FechaBaja, getdate()) from inserted
	update tb_PaquetesDePlazas set Baja='S', FechaBaja = @FechaBaja  where PlazaMadre = (Select idPlaza from inserted)
end
*/
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
-- Como actualmente no se puede diferenciar entre Provinciales y Transferidos, solo comparo los provinciales-
-- Solo se miran los topes generales (no se tienen en cuenta discriminados por nivel u organizacion)


CREATE TRIGGER [dbo].[PlantasPresupuestadas] ON [dbo].[tb_Plazas] 
FOR INSERT
AS
SET NOCOUNT ON
--declare @x int

/*
declare @RegimenSalarial int
declare @CantCargoActual int
declare @CantHorasActual int
declare @CargoSalarial int
declare @TopeCargoPP int
declare @TopeHoras int
declare @TopeHorasSPP int

Select @RegimenSalarial = RegimenSalarial, @CargoSalarial = CargoSalarialDefault from inserted

-- Si el Regimen Salarial es por Cargo Extraigo el tope presupuestario para el anio en vigencia donde el nivel sea nulo
-- y la organizacion sea nula.
if @RegimenSalarial = 12
begin
	Select @TopeCargoPP = CantCargosPP from tb_TopesPresupuestarios 
	where anio = year(getdate()) and nivel is null and organizacion is null

	Select @CantCargoActual = count(*) from tb_serviciosagentes as s
	where s.financiamiento = 2 and
	s.tipodeservicio = 1 and
	s.regimenlaboral = 12 and
	(s.situacionrevista = 1 or s.situacionrevista = 2) and
	s.baja = 'N'

	if (@CantCargoActual+1 > @TopeCargoPP)
		rollback				
end
else
begin
	-- Si el cargo HS CATEDRA SECUNDARIA
	if @CargoSalarial = 3001
	begin
		Select @TopeHoras = CantHorasPPP from tb_TopesPresupuestarios 
		where nivel is null and organizacion is null and anio = year(getdate())
	
		select @CantHorasActual =  isnull(sum(s.horas), 0) from tb_serviciosagentes as s
		where s.financiamiento = 2 and
		s.tipodeservicio = 1 and
		s.regimenlaboral = 12 and
		(s.situacionrevista = 1 or s.situacionrevista = 2) 
		and s.cargosalarial = 3001 and
		s.baja = 'N'
	end
	-- Si el cargo es HS CATEDRA TERCIARIA
	if @CargoSalarial = 4001
	begin
		Select @TopeHoras = CantHorasSPP from tb_TopesPresupuestarios
		where nivel is null and organizacion is null and anio = year(getdate())
	
		select @CantHorasActual =  isnull(sum(s.horas), 0) from tb_serviciosagentes as s
		where s.financiamiento = 2 and
		s.tipodeservicio = 1 and
		s.regimenlaboral = 12 and
		(s.situacionrevista = 1 or s.situacionrevista = 2) 
		and
		s.cargosalarial = 4001 and
		s.baja = 'N'
	end

	-- Si las horas actuales en el sistama + 1 supera el tope se deshace la operación
	if (@CantHorasActual+1 > @TopeHoras)
		rollback
end

*/
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
CREATE TRIGGER [dbo].[ponerPlazaEnPaquete] ON [dbo].[tb_Plazas]
FOR INSERT, UPDATE
AS
SET NOCOUNT ON
declare @Cupof varchar(60)
declare @idPlaza int
declare @Baja varchar(1)
declare @Fechabaja datetime
declare @PaqueteInserted  int
declare @PaqueteDeleted int
declare @TipoPaqueteInserted int
declare @TipoPaqueteDeleted int
declare @Horas int
declare @Paquete int

declare plazasActualizadas1 cursor static for 
Select i.idPlaza, i.Paquete, d.Paquete, isNull(i.TipoDePaquete,-1), isNull(d.TipoDePaquete, -1) from inserted i, deleted d where i.idPlaza = d.idPlaza
open plazasActualizadas1

fetch next from plazasActualizadas1 into @idPlaza, @PaqueteInserted, @TipoPaqueteDeleted, @TipoPaqueteInserted, @TipoPaqueteDeleted

while @@fetch_status = 0
begin
	if (@PaqueteInserted <> @PaqueteDeleted) and @PaqueteInserted is not null and @TipoPaqueteInserted = 3
	begin
		print 'Paso por ponerPlazaEnPaquete'
		update tb_UsoDeExtraClases set cantidad = cantidad - @Horas where Paquete = @PaqueteInserted
	end
fetch next from plazasActualizadas1 into @idPlaza, @PaqueteInserted, @TipoPaqueteDeleted, @TipoPaqueteInserted, @TipoPaqueteDeleted
end

close plazasActualizadas1
deallocate plazasActualizadas1
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
CREATE TRIGGER [dbo].[sacarPlazaDePaquete] ON [dbo].[tb_Plazas]
FOR UPDATE
AS
SET NOCOUNT ON
declare @Cupof varchar(60)
declare @idPlaza int
declare @Horas int
declare @Fechabaja datetime
declare @PaqueteInserted int
declare @PaqueteDeleted int
declare @TipoPaqueteInserted int
declare @TipoPaqueteDeleted int

declare plazasActualizadas cursor static for 
Select i.idPlaza, i.Paquete, d.Paquete, isNull(i.TipoDePaquete,-1), isNull(d.TipoDePaquete, -1) from inserted i, deleted d where i.idPlaza = d.idPlaza
open plazasActualizadas

fetch next from plazasActualizadas into @idPlaza, @PaqueteInserted, @PaqueteDeleted, @TipoPaqueteInserted, @TipoPaqueteDeleted

while @@fetch_status = 0
begin
	--print 'sacarPlazaDePaquete'
	if (@PaqueteInserted <> @PaqueteDeleted) and @PaqueteInserted is null and (Select TipoPaquete from tb_PaquetesDePlazas where PlazaMadre = @PaqueteDeleted) = 3
	begin
		Select @Horas = Horas from tb_Plazas where idPlaza = @idPlaza
		--Si antes tenia un paquete y ahora no -> se incrementan las horas extraclase del paquete
		update tb_UsoDeExtraClases set Cantidad = Cantidad + @Horas where paquete = @PaqueteDeleted
	end
fetch next from plazasActualizadas into @idPlaza, @PaqueteInserted, @PaqueteDeleted, @TipoPaqueteInserted, @TipoPaqueteDeleted
end

close plazasActualizadas
deallocate plazasActualizadas
GO
ALTER TABLE [dbo].[tb_Plazas] ADD CONSTRAINT [PK_tb_Plazas] PRIMARY KEY CLUSTERED  ([idPlaza]) WITH (FILLFACTOR=98) ON [PRIMARY]
GO
CREATE NONCLUSTERED INDEX [idx_Dueno] ON [dbo].[tb_Plazas] ([DuenoActual]) WITH (FILLFACTOR=98) ON [PRIMARY]
GO

ALTER TABLE [dbo].[tb_Plazas] WITH NOCHECK ADD CONSTRAINT [FK_tb_Plazas_tb_CargosSalariales] FOREIGN KEY ([CargoSalarialDefault]) REFERENCES [dbo].[tb_CargosSalariales] ([idCargo]) NOT FOR REPLICATION
GO
ALTER TABLE [dbo].[tb_Plazas] WITH NOCHECK ADD CONSTRAINT [FK_tb_Plazas_tb_CategoriasDeTitulo] FOREIGN KEY ([CategoriaTituloActualOcupante]) REFERENCES [dbo].[tb_CategoriasDeTitulo] ([idCategoria])
GO
ALTER TABLE [dbo].[tb_Plazas] WITH NOCHECK ADD CONSTRAINT [FK_tb_Plazas_tb_Divisiones] FOREIGN KEY ([Division]) REFERENCES [dbo].[tb_Divisiones] ([idDivision])
GO
ALTER TABLE [dbo].[tb_Plazas] WITH NOCHECK ADD CONSTRAINT [FK_tb_Plazas_tb_Finalidades] FOREIGN KEY ([Finalidad]) REFERENCES [dbo].[tb_Finalidades] ([idFinalidad])
GO
ALTER TABLE [dbo].[tb_Plazas] WITH NOCHECK ADD CONSTRAINT [FK_tb_Plazas_tb_FuentesDeFinanciamiento] FOREIGN KEY ([Financiamiento]) REFERENCES [dbo].[tb_FuentesDeFinanciamiento] ([idFuenteFinanciamiento])
GO
ALTER TABLE [dbo].[tb_Plazas] WITH NOCHECK ADD CONSTRAINT [FK_tb_Plazas_tb_Funciones] FOREIGN KEY ([Funcion]) REFERENCES [dbo].[tb_Funciones] ([idFuncion])
GO
ALTER TABLE [dbo].[tb_Plazas] WITH NOCHECK ADD CONSTRAINT [FK_tb_Plazas_tb_Organizaciones] FOREIGN KEY ([Organizacion]) REFERENCES [dbo].[tb_Organizaciones] ([idOrganizaciones])
GO
ALTER TABLE [dbo].[tb_Plazas] WITH NOCHECK ADD CONSTRAINT [FK_tb_Plazas_tb_PartidasPresupuestarias] FOREIGN KEY ([Presupuesto]) REFERENCES [dbo].[tb_PartidasPresupuestarias] ([idPartida])
GO
ALTER TABLE [dbo].[tb_Plazas] WITH NOCHECK ADD CONSTRAINT [FK_tb_Plazas_tb_RegimenDesignaciones] FOREIGN KEY ([RegimenDesigna]) REFERENCES [dbo].[tb_RegimenDesignaciones] ([idRegimenDesignacion])
GO
ALTER TABLE [dbo].[tb_Plazas] WITH NOCHECK ADD CONSTRAINT [FK_tb_Plazas_tb_RegimenLaboral] FOREIGN KEY ([RegimenLaboral]) REFERENCES [dbo].[tb_RegimenLaboral] ([idRegimenLaboral])
GO
ALTER TABLE [dbo].[tb_Plazas] WITH NOCHECK ADD CONSTRAINT [FK_tb_Plazas_tb_RegimenSalarial] FOREIGN KEY ([RegimenSalarial]) REFERENCES [dbo].[tb_RegimenSalarial] ([idRegimenSalarial]) NOT FOR REPLICATION
GO
ALTER TABLE [dbo].[tb_Plazas] WITH NOCHECK ADD CONSTRAINT [FK_tb_Plazas_tb_RegimenDeSuplencias] FOREIGN KEY ([RegimenSuplencias]) REFERENCES [dbo].[tb_RegimenDeSuplencias] ([idRegimenSuplencia])
GO
ALTER TABLE [dbo].[tb_Plazas] WITH NOCHECK ADD CONSTRAINT [FK_tb_Plazas_tb_Sistemas] FOREIGN KEY ([Sistema]) REFERENCES [dbo].[tb_Sistemas] ([idSistema])
GO
ALTER TABLE [dbo].[tb_Plazas] WITH NOCHECK ADD CONSTRAINT [FK_tb_Plazas_tb_SubOrganizaciones] FOREIGN KEY ([SubOrganizacion]) REFERENCES [dbo].[tb_SubOrganizaciones] ([idSubOrganizacion])
GO
ALTER TABLE [dbo].[tb_Plazas] WITH NOCHECK ADD CONSTRAINT [FK_tb_Plazas_tb_Temporalidad] FOREIGN KEY ([Temporalidad]) REFERENCES [dbo].[tb_Temporalidad] ([idTemporalidad])
GO
ALTER TABLE [dbo].[tb_Plazas] WITH NOCHECK ADD CONSTRAINT [FK_tb_Plazas_tb_TiposDeFuncion] FOREIGN KEY ([TipoDeFuncion]) REFERENCES [dbo].[tb_TiposDeFuncion] ([idTipoFuncion])
GO
ALTER TABLE [dbo].[tb_Plazas] WITH NOCHECK ADD CONSTRAINT [FK_tb_Plazas_tb_Turnos] FOREIGN KEY ([Turno]) REFERENCES [dbo].[tb_Turnos] ([idTurno])
GO
EXEC sp_bindrule N'[dbo].[S-N]', N'[dbo].[tb_Plazas].[Baja]'
GO
EXEC sp_bindrule N'[dbo].[S-N]', N'[dbo].[tb_Plazas].[EsJefeDeOrg]'
GO
